package controller

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"my_chat/logic"
	"my_chat/model"
	"time"
)

// @Summary 加载用户好友
// @Description 加载用户好友
// @Tags 用户操作类型接口
// @Accept application/json
// @Produce application/json
// @Param Authorization header string false "Bearer 用户令牌"
// @Param userid body int true "用户id"
// @Security ApiKeyAuth
// @Success 200 {object} _Response
// @Router /contact/loadfriend [post]
func LoadFriends(c *gin.Context) {
	p := new(model.ContactValid)
	if err := c.ShouldBindJSON(p); err != nil {
		// 请求参数有误，直接返回响应
		fmt.Println(err)
		RespFail(c, err.Error())
		return
	}

	data, err := logic.LoadFriends(p)
	if err != nil {
		RespFail(c, err.Error())
		return
	} else {
		RespOkList(c, data, len(data))
	}
}

func AddFriends(c *gin.Context) {
	p := new(model.ContactValid)
	if err := c.ShouldBindJSON(p); err != nil {
		// 请求参数有误，直接返回响应
		fmt.Println(err)
		RespFail(c, err.Error())
		return
	}

	data, err := logic.AddFriends(p)
	if err != nil {
		RespFail(c, err.Error())
		return
	} else {
		fmt.Println(data)
		RespOk(c, data)
	}
}

func LoadCommunity(c *gin.Context) {
	p := new(model.ContactValid)
	if err := c.ShouldBindJSON(p); err != nil {
		// 请求参数有误，直接返回响应
		fmt.Println(err)
		RespFail(c, err.Error())
		return
	}

	data, err := logic.LoadCommunity(p)
	if err != nil {
		RespFail(c, err.Error())
		return
	} else {
		RespOkList(c, data, len(data))
	}
}

// 加入群聊
func JoinCommunity(c *gin.Context) {
	p := new(model.ContactValid)
	if err := c.ShouldBindJSON(p); err != nil {
		// 请求参数有误，直接返回响应
		fmt.Println(err)
		RespFail(c, err.Error())
		return
	}

	data, err := logic.AddCommunity(p)
	if err != nil {
		RespFail(c, err.Error())
		return
	} else {
		fmt.Println(data)
		RespOk(c, data)
	}
}

// 创建群聊
func CreateCommunity(c *gin.Context) {
	p := new(model.Community)
	if err := c.ShouldBindJSON(p); err != nil {
		// 请求参数有误，直接返回响应
		fmt.Println(err)
		RespFail(c, err.Error())
		return
	}
	time.Sleep(time.Second * 3)
	data, err := logic.CreateCommunity(p)
	if err != nil {
		RespFail(c, err.Error())
		return
	} else {
		fmt.Println(data)
		RespOk(c, data)
	}
}

// 查找用户信息
func FindUserById(c *gin.Context) {
	p := new(model.ContactValid)
	if err := c.ShouldBindJSON(p); err != nil {
		// 请求参数有误，直接返回响应
		fmt.Println(err)
		RespFail(c, err.Error())
		return
	}

	data, err := logic.GetUserById(p)
	if err != nil {
		RespFail(c, err.Error())
		return
	} else {
		fmt.Println(data)
		RespOk(c, data)
	}
}
